<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //构造函数的继承
      //面向对象: 是一种思维方式,先分析食物中的对象,分析对象的行为(方法)和特征(属性)--->抽离出对象李的共性特征和行为 变成类(构造函数) --->提高复用性--->
      //面向过程: 按照食物发展的顺序一步一步执行

      function Person(name, age, height) {
        //就是一个Person类
        //人类的共性特征
        this.name = name;
        this.age = age;
        this.height = height;
      }

      //实例化的时候
      //new实例化 具象化的过程
      var zhangsan = new Person("张三", 20, "178cm");
      var lisi = new Person("李四", 21, "168");
      //   console.log(zhangsan);
      //
      //实现构造函数的继承

      //父类构造函数
      function Dad(name) {
        this.name = name;
        this.money = "$10000000";
        this.house = "一栋";
      }

      //继承 inherit
      //extend : 扩展
      //子类构造函数
      function Son(name) {
        // Dad.call(this, name);
        // Dad.apply(this, [name]);
        Dad.bind(this)(name);
        this.age = 20;
      }

      var zhangsan = new Son("张四");
      // console.log(typeof zhangsan);
      // console.log(zhangsan.__proto__.__proto__.__proto__);
      console.log(zhangsan);
    </script>
  </body>
</html>
